package com.sgj.service;

import com.sgj.pojo.Blog;
import com.sgj.vo.BlogRes;
import org.springframework.data.domain.Page;
import org.springframework.data.domain.Pageable;

import java.util.List;
import java.util.Map;

/**
 * @author 沈国纪
 * @date 2021/3/31 14:07
 */
public interface BlogService {

	/**
	 * 根据 id 查询博客
	 * @param id
	 * @return
	 */
	Blog getBlog(Long id);

	/**
	 * 获取博客内容并转换成 Markdown 可识别的 HTML 内容
	 * @param id
	 * @return
	 */
	Blog getAndConvert(Long id);

	/**
	 * 分页查询
	 * @param pageable
	 * @param blogRes
	 * @return
	 */
	Page<Blog> listBlog(Pageable pageable, BlogRes blogRes);

	/**
	 * 页面初始化
	 * @param pageable
	 * @return
	 */
	Page<Blog> listBlog(Pageable pageable);

	/**
	 * 根据标签查询博客
	 * @param tagId
	 * @param pageable
	 * @return
	 */
	Page<Blog> listBlog(Long tagId, Pageable pageable);

	/**
	 * 查询功能
	 * @param query
	 * @param pageable
	 * @return
	 */
	Page<Blog> listBlog(String query, Pageable pageable);

	/**
	 * 页面初始化最新推荐博客
	 * @param size
	 * @return
	 */
	List<Blog> listRecommendBlogTop(Integer size);

	/**
	 * 查询对应年份博客
	 * @return
	 */
	Map<String, List<Blog>> archiveBlog();

	/**
	 * 查询总博客数量
	 * @return
	 */
	Long countBlog();

	/**
	 * 新增博客
	 * @param blog
	 * @return
	 */
	Blog saveBlog(Blog blog);

	/**
	 * 修改博客
	 * @param blog
	 * @return
	 */
	Blog updateBlog(Blog blog);

	/**
	 * 删除博客
	 * @param id
	 */
	void deleteBlog(Long id);
}
